/***********************************************************************************
Copy right:	    Coffee Tech.
Author:         jiaoyue
Date:           2021-11-23
Description:    提供共享内存组件
***********************************************************************************/

#include "shmem.h"
#define SHM_ADDR "/tmp/ipc/shmem/shm_test"   //共享内存的地址
#define MAGIC_ID 's'
key_t key;
int shmid;
// 创建共享内存
int shm_init(size_t shm_size)
{
    // （1）创建唯一key值
    
    key = ftok(SHM_ADDR,MAGIC_ID);
    if (key < 0)
    {
        perror("ftok err\n");
        return -1;
    }
    // （2）创建或打开共享内存
    shmid = shmget(key, shm_size, IPC_CREAT | 0666);
    if (shmid < 0)
    {

        perror("shmget err");
        return -1;
    }
    return shmid;
}
// 获取共享内存地址
void *shm_getaddr()
{
    void *addr;
    addr = shmat(shmid, NULL, 0);
    if (addr == (void *)-1)
    {
        perror("shm_getaddr err");
        return NULL; // 或者根据需要处理错误
    }
    return addr;
}